'use strict';
var INTEGER_REGEXP = /^(1|2)\d{3}$/;
function IdentityCodeValid(code) {
	var city = {
		11: "北京",
		12: "天津",
		13: "河北",
		14: "山西",
		15: "内蒙古",
		21: "辽宁",
		22: "吉林",
		23: "黑龙江 ",
		31: "上海",
		32: "江苏",
		33: "浙江",
		34: "安徽",
		35: "福建",
		36: "江西",
		37: "山东",
		41: "河南",
		42: "湖北 ",
		43: "湖南",
		44: "广东",
		45: "广西",
		46: "海南",
		50: "重庆",
		51: "四川",
		52: "贵州",
		53: "云南",
		54: "西藏 ",
		61: "陕西",
		62: "甘肃",
		63: "青海",
		64: "宁夏",
		65: "新疆",
		71: "台湾",
		81: "香港",
		82: "澳门",
		91: "国外 "
	};
	var tip = "";
	var pass = true;
	if (!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(code)) {
		tip = "身份证号格式错误";
		pass = false;
	} else if (!city[code.substr(0, 2)]) {
		tip = "地址编码错误";
		pass = false;
	} else {
		//18位身份证需要验证最后一位校验位
		if (code.length == 18) {
			code = code.split('');
			//∑(ai×Wi)(mod 11)
			//加权因子
			var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
			//校验位
			var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
			var sum = 0;
			var ai = 0;
			var wi = 0;
			for (var i = 0; i < 17; i++) {
				ai = code[i];
				wi = factor[i];
				sum += ai * wi;
			}
			var last = parity[sum % 11];
			if (parity[sum % 11] != code[17]) {
				tip = "校验位错误";
				pass = false;
			}
		}
	}
	return pass;
}
angular.module('gkwb')
	.directive('certino', [function () {
		return {
			require: 'ngModel',
			link: function (scope, elm, attrs, ctrl) {
				ctrl.$parsers.unshift(function(viewValue) {
					var pass = IdentityCodeValid(viewValue);
					if (pass) {

						// it is valid
						ctrl.$setValidity('certino', true);
						return viewValue;
					} else {
						// it is invalid, return undefined (no model update)
						ctrl.$setValidity('certino', false);
						return undefined;
					}
				});
			}
		};
	}])
	.directive('integer', [function() {
		return {
			require: 'ngModel',
			scope: {
				year: "=year"
			},
			link: function(scope, elm, attrs, ctrl) {
				ctrl.$parsers.unshift(function(viewValue) {
					var vv = parseInt(viewValue);
					var y = parseInt(scope.year);
					if (!viewValue) {
						ctrl.$setValidity('dateYear', true);
						return viewValue;
					}
					if (INTEGER_REGEXP.test(viewValue) && vv > y) {

						// it is valid
						ctrl.$setValidity('dateYear', true);
						return viewValue;
					} else {
						// it is invalid, return undefined (no model update)
						ctrl.$setValidity('dateYear', false);
						return undefined;
					}
				});
				scope.$watch("year", function(value) {

					if (value) {
						var vv = parseInt(ctrl.$viewValue);
						var y = parseInt(value);
						if (vv < y) {
							ctrl.$setValidity('dateYear', false);
						}
					}
				});
			}
		};
	}])
	.directive('submitform', ['$window','$http', function($window, $http) {
		return {
			restrict: 'A',
			scope: {
				order: "=order"
			},
			link: function(scope, elm, attrs, ctrl) {
				var dom = angular.element(elm);
				var examId = $window.sessionStorage.token;
				elm.on('submit', function(event) {
					event.preventDefault();
					var btn = elm[0].querySelectorAll("#btn-submit")
					
					var f = $window.confirm('前往缴费？');
					if (f) {
						btn[0].setAttribute('disabled','disabled');
						var o = {
							orderId:scope.order.orderNO,
							examId:examId,
							money:scope.order.amout,
							transDate:scope.order.transDate,
							merId:scope.order.businessID,
							chkValue:scope.order.encrypt
						}
						$http.post('/api/orders',o)
						.success(function(data) {
							btn[0].style.display = 'none';
							dom[0].submit();
						})
						.error(function(err){
							btn[0].removeAttribute('disabled');
							alert(err.message);
						})
					}
					

				})

			}
		};
	}]);